草庐IT

C++ STL : Custom sorting one vector based on contents of another

全部标签

c++ - 将 STL complex<double> 转换为 fftw_complex 的问题

FFTW手册says它的fftw_complex类型与std::complex位兼容STL中的类。但这对我不起作用:#include#includeintmain(){std::complexx(1,0);fftw_complexfx;fx=reinterpret_cast(x);}这给了我一个错误:error:invalidcastfromtype‘std::complex’totype‘double[2]’我做错了什么? 最佳答案 fftw_complex与C99和C++复杂类型的位兼容性背后的想法不是它们可以很容易地相互创建,

c++ - 为什么 STL 需要一个临时迭代器变量来编译它?

这是一段非常简单的代码:#includeintmain(){std::vectormyVec(5);std::vector::const_iteratorfirst=myVec.begin();std::vector::const_iteratorlast=myVec.begin()+3;std::vectornewVec1(first,last);std::vectornewVec2(myVec.begin(),last);return0;}声明newVec1的行编译。声明newVec2的行失败并出现以下错误:prog.cpp:Infunction'intmain()':prog.c

c++ - STL vector 与 map 删除

在STL中,几乎所有容器都有删除功能。我的问题是在vector中,删除函数返回一个指向vector中下一个元素的迭代器。map容器不这样做。相反,它返回一个void。有人知道为什么会出现这种不一致吗? 最佳答案 见http://www.sgi.com/tech/stl/Map.htmlMaphastheimportantpropertythatinsertinganewelementintoamapdoesnotinvalidateiteratorsthatpointtoexistingelements.Erasinganeleme

c++ - 如何将 STL vector 中的一系列元素设置为特定值?

我有一个boolvector。我需要将其元素从第n次到第m次设置为true.有没有不使用循环的优雅方法?编辑:感谢所有指出使用vector问题的人.不过,我一直在寻找更通用的解决方案,比如jalf给出的解决方案。 最佳答案 algorithmheader中的std::fill或std::fill_n应该可以解决问题。//setmelements,startingfrommyvec.begin()+ntotruestd::fill_n(myvec.begin()+n,m,true);//setallelementsbetweenmyv

c++ - 打印任何 STL 容器

您将如何编写一个库,当包含它时,它会重载any*现有STL容器的运算符?堆栈和队列等适配器除外,因为您无法遍历它们。一个self强加的要求是它不得包含任何容器的头文件。这会使最终的可执行文件不必要地膨胀。在我想使用的容器之后包含此header更有意义。此限制意味着使用templates或macros.我正在寻找建议和指点,所以,请,不要只发布可以做到这一点的完整工作代码!自己实现是学习过程的一部分。欢迎使用演示某些事情如何工作的小代码片段。到目前为止我做了什么:我已经重载了每个具有不同模板签名的容器的运算符。我使用这种方法遇到的问题是,有些容器具有相同数量的模板参数,但有些包含std:

c++ - 有没有办法限制 STL Map 的大小?

我想在C++中实现某种查找表,用作缓存。它旨在模拟我正在模拟的一个硬件。键是非整数,所以我猜散列是有序的。我无意发明轮子,所以我打算为此使用std::map(尽管欢迎提出替代方案的建议)。问题是,有没有办法限制散列的size以模拟我的硬件大小有限的事实?我希望哈希的insert方法在达到限制时返回错误消息或抛出异常。如果没有这样的方法,我会在尝试插入之前简单地检查它的大小,但这似乎是一种不雅的方法。 最佳答案 首先,map结构不是哈希表,而是平衡的二叉树。这会影响查找时间O(logN)而不是O(1)以获得最佳哈希实现。这可能会或不会

c++ - STL 中有解引用迭代器吗?

我想知道STL中是否有一个迭代器在返回之前取消引用指向的对象。这在操作容器聚合指针时可能非常有用。这是我希望能够做的一个例子:#include#include#includeusingnamespacestd;intmain(){vectorvec;inti=1;intj=2;intk=3;vec.push_back(&i);vec.push_back(&j);vec.push_back(&k);copy(deref_iterator(vec.begin()),deref_iterator(vec.end()),ostream_iterator(cout,""));//prints"1

c++ - STL 哈希函数

STL是否有任何可用的Hash函数,这些函数是公开的?我知道有一些使用哈希值的非标准实现(例如boost::hash_map),MSVC8实现了hash_map/hash_set/etc的一个版本。但是是否有任何在C++98STL中定义的哈希函数?如果不是,可靠散列函数的最佳非C++98来源是什么?首选来源的顺序(从最可接受到最NotAcceptable):Boost、C++0x标准STL、TR1、其他第3方。 最佳答案 总结一下:STL有hashfunctionsC++98标准库没有C++TR1有hashfunctions(6.3

C++ STL Containers 无一异常(exception)都无法使用,我们能做些什么呢?

假定的C++精神是“所用,付费”。但是,由于异常及其在STL中的广泛使用,这可能会让人非常沮丧。在任何人说“打开异常”之前,我们必须生活的编程环境并不那么慷慨。我是内核编程,其中执行环境不提供足够的C++运行时来展开堆栈等。当STL容器无法为其底层后备存储重新分配存储空间时,它们将引发分配失败异常。当环境中未启用异常时,程序将相当神秘地崩溃:我已经看到实现直接中止,或者只是假设分配有效,即使它没有。我遇到的许多CADT库通过返回错误代码或将错误作为输出参数来预先处理此问题。处理这个问题的“最佳”C++方法是什么?澄清我不想使用标准库,我不能。我不是在问“我怎么做不能做的事”。我在问:“

c++ - 我如何知道一个 STL 对象占用了多少内存?

我需要在我的程序中收集有关内存使用情况的统计信息。我的代码主要是使用STL编写的。有什么方法可以知道STL对象消耗了多少内存?例如,strings1="hello";strings2="hellohellohellohellohellohellohellohellohellohellohellohellohello";s1和s2消耗了多少内存?显然sizeof(string)+s1.length()不太准确。 最佳答案 如果您愿意稍微打扰一下,您可以创建一个自定义分配器来按容器类型或按分配的类型跟踪所有堆使用情况。对于确定内存使用情